/*
   LineDisplayConst.h
   
   Copyright (C) 2006 LinuxOne, Inc. <Republic of korea>

   This library is free software; you can redistribute it and/or modify
   it under the terms of the GNU Lesser General Public License as
   published by the Free Software Foundation; either version 2.1
   of the License, or (at your option) any later version.

   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   Lessor General Public License for more details.

   You should have received a copy of the GNU Lessor General Public
   License along with this library; if not, write to the Free Software
   Foundation, inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

   Hyunjin Kim <mgc521@linuxone.co.kr>

   LinuxOne, Inc., hereby disclaims all copylight
   written by Hyunjin Kim, 20 December 2006
*/

#ifndef _BOOYO_POS_LINEDISPLAY_CONST_H_
#define _BOOYO_POS_LINEDISPLAY_CONST_H_

namespace booyopos
{

class CLineDisplayConst : public CBooyoPOSConst
{
public:
	enum CapBlink
	{
		DISP_CB_NOBLINK,
		DISP_CB_BLINKALL,
		DISP_CB_BLINKEACH
	};

	enum CapCharacterSet
	{
		DISP_CCS_NUMERIC	= 0,
		DISP_CCS_ALPHA		= 1,
		DISP_CCS_ASCII		= 998,
		DISP_CCS_KANA		= 10,
		DISP_CCS_KANJI		= 11,
		DISP_CCS_UNICODE	= 997
	};

	enum CapCursorType
	{
		DISP_CCT_NONE		= 0x00000000,
		DISP_CCT_FIXED		= 0x00000001,
		DISP_CCT_BLOCK		= 0x00000002,
		DISP_CCT_HALFBLOCK	= 0x00000004,
		DISP_CCT_UNDERLINE	= 0x00000008,
		DISP_CCT_REVERSE	= 0x00000010,
		DISP_CCT_OTHER		= 0x00000020,
		DISP_CCT_BLINK		= 0x00000040
	};

	enum CapReadBack
	{
		DISP_CRB_NONE		= 0x00000000,
		DISP_CRB_SINGLE		= 0x00000001
	};

	enum CapReverse
	{
		DISP_CR_NONE		= 0x00000000,
		DISP_CR_REVERSEALL	= 0x00000001,
		DISP_CR_REVERSEEACH	= 0x00000002
	};

	enum CharacterSet
	{
		DISP_CS_UNICODE		= 997,
		DISP_CS_ASCII		= 998,
		DISP_CS_ANSI		= 999
	};

	enum CursorType
	{
		DISP_CT_NONE		= 0,
		DISP_CT_FIXED		= 1,
		DISP_CT_BLOCK		= 2,
		DISP_CT_HALFBLOCK	= 3,
		DISP_CT_UNDERLINE	= 4,
		DISP_CT_REVERSE		= 5,
		DISP_CT_OTHER		= 6,
		DISP_CT_BLINK		= 0x10000000
	};

	enum MarqueeType
	{
		DISP_MT_NONE		= 0,
		DISP_MT_UP			= 1,
		DISP_MT_DOWN		= 2,
		DISP_MT_LEFT		= 3,
		DISP_MT_RIGHT		= 4,
		DISP_MT_INIT		= 5
	};

	enum MarqueeFormat
	{
		DISP_MF_WALK,
		DISP_MF_PLACE
	};

	enum DefineGlyph
	{
		DISP_GT_SINGLE		= 1
	};

	/* "DisplayText" and "DisplayTextAt" Method */
	enum DisplayTextAttribute
	{
		DISP_DT_NORMAL,
		DISP_DT_BLINK,
		DISP_DT_REVERSE,
		DISP_DT_BLINK_REVERSE
	};

	/* "ScrollText" Method */
	enum Direction
	{
		DISP_ST_UP		= 1,
		DISP_ST_DOWN	= 2,
		DISP_ST_LEFT	= 3,
		DISP_ST_RIGHT	= 4
	};

	/* "SetDescriptor" Method */
	enum SetDescriptorAttribute
	{
		DISP_SD_OFF,
		DISP_SD_ON,
		DISP_SD_BLINK
	};

	/* "DisplayBitmap" and "SetBitmap" Method */
	enum BitmapAttribute
	{
		// "width" Parameter
		DISP_BM_ASIS		= -11,

		// "AlignmentX" Parameter
		DISP_BM_LEFT		= -1,
		DISP_BM_CENTER		= -2,
		DISP_BM_RIGHT		= -3,

		// "AlignmentY" Parameter
		DISP_BM_TOP			= -1,
		DISP_BM_BOTTOM		= -3
	};

	enum ErrorCodeExtended
	{
		EDISP_TOOBIG		= 1 + ERREXT,
		EDISP_BADFORMAT		= 2 + ERREXT
	};

	int capBlink;
	bool capCharacterSet;
	bool capBitmap;
	bool capBlinkRate;
	bool capBrightness;
	bool capCustomGlyph;
	int capCursorType;
	bool capDescriptors;
	bool capHMarquee;
	bool capICharWait;
	bool capMapCharacterSet;
	int capPowerReporting;
	int capReadBack;
	int capReverse;
	bool capScreenMode;
	bool capStatisticsReporting;
	bool capUpdateStatistics;
	bool capCompareFirmwareVersion;
	bool capUpdateFirmware;
	bool capVMarquee;
	int blinkRate;
	int characterSet;
	std::string characterSetList;
	int columns;
	int currentWindow;
	int cursorColumn;
	int cursorType;
	int cursorRow;
	bool cursorUpdate;
	std::string customGlyphList;
	int deviceBrightness;
	int deviceColumns;
	int deviceDescriptors;
	int deviceRows;
	int deviceWindows;
	int glyphHeight;
	int glyphWidth;
	int interCharacterWait;
	bool mapCharacterSet;
	int marqueeRepeatWait;
	int marqueeUnitWait;
	int marqueeFormat;
	int marqueeType;
	int maximumX;
	int maximumY;
	int powerNotify;
	int powerState;
	int rows;
	int screenMode;
	std::string screenModeList;
};

} // namespace booyopos

#endif // _BOOYO_POS_LINEDISPLAY_CONST_H_

